/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.mindbox.mueblesalpes.presentacion.seguridad;

import com.mindbox.mueblesalpes.negocio.entity.Cliente;
import com.mindbox.mueblesalpes.negocio.entity.TipoUsuario;
import com.mindbox.mueblesalpes.negocio.entity.Usuario;
import com.mindbox.mueblesalpes.negocio.seguridad.ISecurityService;
import com.mindbox.mueblesalpes.negocio.seguridad.SecurityServiceMock;
import com.mindbox.mueblesalpes.presentacion.sesion.SessionInfo;
import com.mindbox.mueblesalpes.presentacion.utils.ReglasNavegacion;
import com.mindbox.mueblesalpes.presentacion.utils.RequestParameters;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;


/**
 *
 * @author Catalina
 */

public class SecurityBean {

    private ISecurityService securityService;
    private String username;
    private String pwd;
    private String next;

    public SecurityBean() {
        securityService = new SecurityServiceMock();
        HttpSession sesion = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
        next = (String)sesion.getAttribute(RequestParameters.next_page.name());
    }

     public String login(){
        HttpSession sesion = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
        Usuario user = securityService.login(username, pwd);
        SessionInfo sesionInfo = (SessionInfo) sesion.getAttribute(SessionInfo.class.getName());
        if(sesionInfo == null)
            sesionInfo = new SessionInfo();
        //obtener regla de navegación posterior al logueo
        sesion.removeAttribute(RequestParameters.next_page.name());
        if(user.getTipoUsuario() == TipoUsuario.ADMINISTRADOR){
            sesionInfo.setUsuario(user);
            sesion.setAttribute(SessionInfo.class.getName(), sesionInfo);
            //validar si se tiene alguna regla de navegacion
            if(next != null && next.trim().length() != 0 ){
                return next;
            }else{
                return "inicio";
            }
        }else{
            Cliente cliente = new Cliente();
            cliente.setNombreCompleto("Harry");
            cliente.setNombreCompleto("Plotter");
            sesionInfo.setUsuario(user);
            sesionInfo.setCliente(cliente);
            sesion.setAttribute(SessionInfo.class.getName(), sesionInfo);
            //validar si se tiene alguna regla de navegacion
            if(next != null && next.trim().length() != 0 ){
                return next;
            }else{
                return "inicio";
            }
        }
    }

    public String logout(){
      HttpSession sesion = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
      sesion.removeAttribute(SessionInfo.class.getName());
      return ReglasNavegacion.logout.toString();
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }
}
